
let path = require("path");  // 一般用于做路径解析和路径拼接
// console.log(path);
// 路径相关的变量
// console.log(__dirname);  // 返回当前文件所在文件夹
// console.log(__filename); // 返回当前文件所在位置

// console.log(process.cwd()); // 返回终端启动的位置  => (命令行开启的位置)

// 路径解析
// console.log(__filename);

// var str = "C:/Users/怀霜凌志/Desktop/2302/node/official/path.js";

// var data = path.parse(str);  // 将路径字符串解析为对象
// console.log(data);

// 结果
// {
//     root: 'C:/',
//     dir: 'C:/Users/怀霜凌志/Desktop/2302/node/official',
//     base: 'path.js',
//     ext: '.js',
//     name: 'path'
// }

// var dir = path.dirname(str);  // 返回路径中的目录部分
// console.log(dir);

// var base = path.basename(str);  // 返回路径中的文件部分(文件名 + 后缀)
// console.log(base);

// var ext = path.extname(str);  // 返回路径中的文件后缀部分
// console.log(ext);



// 路径拼接

// path.resolve([from ...], to)  将 to 参数解析为绝对路径，给定的路径的序列是从右往左被处理的，后面每个 path 被依次解析，直到构造完成一个绝对路径。

// __dirname  当前文件所在的文件夹 C:/Users/怀霜凌志/Desktop/2302/node/official
// var str = path.resolve(__dirname,"./a","./b","./1.txt");
// console.log(str);

// 默认以 终端路径为基本路径 process.cwd()
// var str = path.resolve(process.cwd(), "./a","./b","./1.txt");
// var str = path.resolve( "./a","./b","./1.txt");
// console.log(str);

// C:/Users/怀霜凌志/Desktop/2302/node/official  
// var str = path.resolve(__dirname,"./a","../b","./1.txt");
// console.log(str);

// 注意: path.resolve中  /a => 盘符:/a   => / 根目录
// var str = path.resolve(__dirname, "/a","../b","./1.txt");
// console.log(str);


// path.join() 方法使用特定于平台的分隔符作为定界符将所有给定的 path 片段连接在一起，然后规范化生成的路径。 
// 目的是规范路径  
// var str = path.join(__dirname, "/a","../b","./1.txt");
// console.log(str);

var str = path.join(__dirname, ".////a","./b","./1.txt");
console.log(str);



// path.relative()  方法根据当前工作目录返回从 from 到 to 的相对路径。 如果 from 和 to 都解析为相同的路径（在分别调用 path.resolve() 之后），则返回零长度字符串。(接收两个目录!!!!)
// 从一个目录跳转至另一个目录时的相对路径

var res = path.relative("c:/a/b/c","c:/a/b/d");
console.log(res);

var res = path.relative("c:/a/b/c","c:/d");
console.log(res);












